#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdlib.h>

int main() {
    // 创建 5 个子进程
    for (int i = 0; i < 5; i++) {
        pid_t pid = fork();

        if (pid < 0) {
            // fork 失败
            printf("Fork failed!\n");
            return 1;
        } else if (pid == 0) {
            // 子进程
            printf("This is child process %d. PID: %d, Parent PID: %d\n", i+1, getpid(), getppid());
            
            // 子进程无限循环
            while (1) {
                // 子进程的无限执行
                printf("Child %d (PID: %d) running...\n", i+1, getpid());
                sleep(1);  // 睡眠 1 秒，避免输出过快
            }
            exit(0);  // 子进程不应该走到这里，确保退出
        }
    }

    // 父进程只执行一次
    printf("This is the parent process. PID: %d\n", getpid());

    // 父进程等待所有子进程创建完毕
    sleep(2);  // 等待 2 秒，确保父进程输出比子进程更早，便于观察
    return 0;
}

